home *** CD-ROM | disk | FTP | other *** search
-
- /*
- Listing 4
- */
-
- #include <stdio.h>
- #include "enet_cs.h"
-
- int NODE1_num, NODE2_num;
-
- extern int node;
-
- extern FILE *fp;
-
- int critical_section()
- {
-
- switch (node) {
-
- case NODE0:
-
- NODE1_num = cs_read (NODE1_LOC);
- NODE2_num = cs_read (NODE2_LOC);
-
- if ( (NODE1_num == READY) && (NODE2_num == READY) ) {
-
- NODE1_num = CLEAR;
-
- cs_write ( NODE1_LOC, NODE1_num);
-
- NODE2_num = CLEAR;
-
- cs_write ( NODE2_LOC, NODE2_num);
-
- return(STOP);
-
- } else {
-
- return(NORMAL);
-
- }
-
- break;
-
- case NODE1:
-
- NODE1_num = READY;
-
- cs_write ( NODE1_LOC, NODE1_num);
-
- return(STOP);
-
- break;
-
- case NODE2:
-
- NODE2_num = READY;
-
- cs_write ( NODE2_LOC, NODE2_num);
-
- return(STOP);
-
- break;
-
- default:
- printf ("Error: invalid processor\n");
- exit(0);
- break;
-
-
- }
-
-
- }
-
-